package com.hmall.trade.domain.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 订单页面视图对象
 * 用于前端展示的订单数据模型
 * 包含订单基本信息和状态时间节点
 */
@Data
@ApiModel(description = "订单页面VO，用于前端展示订单信息及状态")
public class OrderVO {

    /**
     * 订单ID
     * 唯一标识订单
     */
    @ApiModelProperty(value = "订单ID", example = "100001")
    private Long id;

    /**
     * 订单总金额（单位：分）
     * 订单中所有商品的金额总和
     */
    @ApiModelProperty(value = "订单总金额，单位为分（如10000表示100元）", example = "19900")
    private Integer totalFee;

    /**
     * 支付类型
     * 1-支付宝，2-微信，3-余额支付
     */
    @ApiModelProperty(value = "支付类型（1-支付宝，2-微信，3-余额支付）", example = "1")
    private Integer paymentType;

    /**
     * 用户ID
     * 下单用户的唯一标识
     */
    @ApiModelProperty(value = "用户ID", example = "1001")
    private Long userId;

    /**
     * 订单状态
     * 1-未付款，2-已付款未发货，3-已发货未确认，4-交易成功，5-订单关闭，6-已评价
     */
    @ApiModelProperty(value = "订单状态（1-未付款，2-已付款未发货，3-已发货未确认，4-交易成功，5-订单关闭，6-已评价）", example = "2")
    private Integer status;

    /**
     * 创建时间
     * 订单创建的时间戳
     */
    @ApiModelProperty(value = "订单创建时间", example = "2023-10-01T12:00:00")
    private LocalDateTime createTime;

    /**
     * 支付时间
     * 订单完成支付的时间戳
     */
    @ApiModelProperty(value = "支付完成时间", example = "2023-10-01T12:30:00")
    private LocalDateTime payTime;

    /**
     * 发货时间
     * 商家发货的时间戳
     */
    @ApiModelProperty(value = "商家发货时间", example = "2023-10-02T09:00:00")
    private LocalDateTime consignTime;

    /**
     * 交易完成时间
     * 用户确认收货的时间戳
     */
    @ApiModelProperty(value = "交易完成时间（用户确认收货）", example = "2023-10-05T15:00:00")
    private LocalDateTime endTime;

    /**
     * 交易关闭时间
     * 订单取消或超时关闭的时间戳
     */
    @ApiModelProperty(value = "订单关闭时间", example = "2023-10-01T14:00:00")
    private LocalDateTime closeTime;

    /**
     * 评价时间
     * 用户完成评价的时间戳
     */
    @ApiModelProperty(value = "用户评价时间", example = "2023-10-06T10:00:00")
    private LocalDateTime commentTime;
}